<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //每个函数天生自带一个属性  prototype 是一个对象结构  原型 
        // 每个对象天生自带一个属性  __proto__ 指向所属构造函数的prototype
        //构造函数 通过new 实例化 对象
        // 对象的__proto__   => 构造函数的 prototype

        // 只要是构造函数 new 的对象 都可以访问自己的prototype

        
        // function Person(name,age){  // prototype
        //     this.name = name;
        //     this.age = age;
        //     this.eat = function(){
        //         console.log(this.name+'正在吃');
        //     }
        // }


        // const obj1 = new Person('张三',18); // __proto__ 
        // const obj2 = new Person('李四',28);// __proto__
        // const obj3 = new Person('王五',38);// __proto__

        // 创建三个对象  开辟三个函数空间   浪费 

         function Person(name,age){  // prototype
            this.name = name;
            this.age = age;
            
        }

        Person.prototype.eat = function(){
            console.log(this.name+'正在吃');
        }

        const obj1 = new Person('张三',18); // __proto__ 
        const obj2 = new Person('李四',28);// __proto__
        const obj3 = new Person('王五',38);// __proto__

        // 上面 只开辟了一个空间  
        // 三个对象都可以访问 

        obj1.eat();
        obj2.eat();

        obj3.eat();

        console.log(obj1.__proto__ === Person.prototype); // true
        console.log(obj2.__proto__ === Person.prototype); // true
        console.log(obj3.__proto__ === Person.prototype); // true
        // 

        
    </script>
</body>
</html>